package com.hy.controller;

import com.hy.Result.ResponseResult;
import com.hy.service.APPUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

@RestController
public class AppUserController {

    @Autowired
    private APPUserService apUserService;


    /**
     * 微信授权登录
     * @param map map
     * @return ResponseResult
     * appid: 这是一个硬编码的应用 ID，'wxbe769740835caad2'，通常是微信小程序的应用标识。
     * secret: 这是一个硬编码的密钥，'5a72239d3fbf0d14803193abc582bf1b'，用于身份验证。
     * avatarUrl: 用户的头像 URL，从 uni.getUserProfile 返回的用户信息中获取。
     * nickName: 用户的昵称，同样是从 uni.getUserProfile 返回的用户信息中获取。
     * code: 从 uni.login 返回的 code，是一个临时的登录凭证，用于换取用户的授权信息。。
     */
    @PostMapping("/api/wx/login")
    public ResponseResult wxLogin(@RequestBody Map<String,Object> map) {
        System.err.println(map);
//        Object appid = map.get("appid");
//        Object secret = map.get("secret");
//        Object avatarUrl = map.get("avatarUrl");
//        Object nickName = map.get("nickName");
//        Object code = map.get("code");
//
//        System.err.println(appid);
//        System.err.println(secret);
//        System.err.println(avatarUrl);
//        System.err.println(nickName);
//        System.err.println(code);
        try {
            return apUserService.wxLogin(map);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseResult.errorResult(400, "登录失败!"+e.getMessage());
        }
    }

    /**
     * 发送验证码
     * @param map 手机号
     * @return ResponseResult
     */
    @PostMapping("/api/user/send-code")
    public ResponseResult sendCode(@RequestBody Map<String,Object> map){
        System.err.println("发送验证码:"+map);
        try {
            return apUserService.sendCode(map);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseResult.errorResult(400, "发送失败!"+e.getMessage());
        }
    }

    /**
     * app用户登录
     * @param map
     * @return
     */
    @PostMapping("/api/user/login")
    public ResponseResult login(@RequestBody Map<String,Object> map){
        System.err.println("登录:"+map);
        try {
            return apUserService.login(map);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseResult.errorResult(400, "登录失败!"+e.getMessage());
        }
    }

    /**
     * 用户注册
     * @param map map
     * @return ResponseResult
     */
    @PostMapping("/api/user/register")
    public ResponseResult register(@RequestBody Map<String,Object> map){
        System.err.println("注册:"+map);
        try {
            return apUserService.register(map);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseResult.errorResult(400, "注册失败!"+e.getMessage());
        }
    }

    // 上传头像接口
    @PostMapping("/api/user/upload-avatar")
    public ResponseResult<?> uploadAvatar(@RequestParam("file") MultipartFile file) {
        try {
            return apUserService.uploadAvatar(file);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseResult.okResult(400, "上传失败!"+e.getMessage());
        }
    }
}
